home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Experimental BBS Explossion 3
/
Experimental BBS Explossion III.iso
/
gus
/
sdkdigv2.zip
/
SDKV2N27.TXT
< prev
next >
Wrap
Text File
|
1993-07-23
|
7KB
|
165 lines
GUS Programmer's Digest Fri Jul 23 00:07 Volume 2: Issue 27
Today's Topics:
Real synths have sliders...
SDK Doc Questions
Standard Info:
- Meta-info about the GUS can be found at the end of the Digest.
- Before you ask a question, please READ THE FAQ.
----------------------------------------------------------------------
Date: Thu, 22 Jul 93 06:59:40 PDT
From: deraud@power.amasd.anatcp.rockwell.com (Robert Lee DeRaud)
Subject: Real synths have sliders...
Message-ID: <9307221359.AA08738@power.amasd.anatcp.rockwell.com>
One of the main problems with sample-playback synths (at least those
without extensive and expensive back-end signal processing) is that they
cannot emulate classical analog synths worth a damn. The kind of beast
I'm talking about typically has MiniMoog somewhere in its gene pool:
Signal Generator ---> VCF ---> VCA ---> Output
along with LFO's, controller wheels, envelope generators, etc providing
"programmable" control inputs to the VCF and VCA.
The GUS can do a decent enough job of emulating the VCA since amplitude
ramping is available, but it cannot handle the VCF at all: the frequency
content of the output is ENTIRELY controlled by the sample being played.
The next part of this conversation typically goes like: "Well, get a
MiniMoog or Prophet or whatever and sample it!" WRONG! With the
exception of some (optional) keyboard-follow effects, the control inputs
to the analog synths VCF are INDEPENDENT of the note being played. In
particular, the LFO frequency and envelope generator time constants are
usually fixed. Playing back the samples at various pitches makes these
emulated controls appear to follow the pitch. E.g. if the sample is
played back an octave higher than recorded, the LFO seems to be running
twice as fast and the envelope reaches its release point at half the
expected time. The only way out of this is to multi-sample AT EVERY
NOTE! (So when is the 8MB "SuperGUS" coming out?)
[An aside: anyone truly serious about synthesizers owes it to
him/herself to sit down and fool around with an older analog synth at
least once. But be warned, the knob/slider twiddling can be truly addictive!]
So...the whole point of this is the question: can a GUS emulate a VCF by
using what amounts to a two-dimensional sample? If we have a bunch (say
512) of small, simple waveform tables (say 512 samples each), that's one
256K memory bank. Each table has a different frequency content, i.e. it
corresponds to a different VCF setting. The idea is to switch from table
to table while the note is playing to emulate the VCF, in the same way
that the amplitude is changed to emulate the VCA. But can the sample
base address be twiddled this way without generating an ugly assortment
of clicks and pops? (Note that the table OFFSET is not modified, so
there is a reasonable continuity in the output sample stream, assuming
the wave tables are properly constructed.)
[Another annoying aside: I THINK this is how the Fairlight worked, but
since they cost >$30K, I never got one to use at home :-)]
Comments?
------------------------------
Date: Thu, 22 Jul 1993 10:09:57 -0700 (PDT)
From: roberts@brahms.amd.com (Dave Roberts)
Subject: SDK Doc Questions
Message-ID: <9307221709.AA23905@angelo.amd.com>
I just snarfed the Postscript SDK documentation off the GUS
mailserver, along with the SDK itself. After reading the docs, I have
a few of questions.
First, a general comment: The theory of operation section of the
documentation needs to be expanded greatly! All the stuff that
follows later is pretty good, but there needs to be more discussion
about the format of sound data, loop points, volume envelopes, etc.
In other words, how all this stuff generally works. Much of this
stuff may be obvious to various people, but it wasn't for me. If I
hadn't been so engrossed with the GUS already, I'd have been totally
lost. Basically, the terminology wasn't defined (e.g., I was confused
between a start and a begin point on a wave for a while). Most of my
questions would be answered with an expanded general theory section.
Now, on to the real questions.
Question #1:
How does looping work? Specifically, how does reverse looping
operate? What are the end points? What are all the various looping
options? The docs mention resetting end points to deal with sampled
decays. What are the exact steps involved with this? How do you
handle decay without using a sampled decay? Just a volume ramp down
until you get to zero and then shut off the voice?
Question #2:
The voice control registers have bits that can be modified at any time
by the GF1. The GF1 does a read-modify-write cycle to update these
bits. The SDK docs say that when writing to a register containing one
of these bits that the software should write the value twice,
separated by a delay (which is specified by I don't remember). Anyway,
this is all fine and dandy, but imagine this situation.
Voice control reigster, bit 6, controls the direction of movement
through the wave. What if I (the program) want to update a bit in the
register. I read the register value, modify the bit I want, and write
it back twice. What if the GF1, between the program's writes changes
the direction of movement bit (because it was set to a loop mode and
hit the end of the loop points and is now bouncing back the other
way)? The problem that I see is that I (the program) will end up
setting the direction of movement bit back to the old value, which
will start the wave back bouncing the other way before it reaches the
other loop point. Am I right with this, or do I not understand
looping? Is this a problem? Is there a workaround other than, "don't
do that"?
Question #3:
One page 4 of the SDK docs they are describing volume ramping. There
is a table that describes the rate bits. The table mentions something
called a "FUR". What's a FUR?
Question #4:
What is the centerpoint for unsigned waveforms, 7F or 80 (hex)?
Thanks for any help you gurus might be able to give.
Dave Roberts
Advanced Micro Devices, Inc.
I/O and Network Products Division
david.roberts@amd.com
------------------------------
End of GUS Programmer's Digest V2 #27
*************************************
To post to tomorrow's digest: <gus-sdk%itchy@dsd.es.com>
To (un)subscribe or get help: <gus-sdk-request%itchy@dsd.es.com>
To contact a human (last resort): <gus-sdk-owner%itchy@dsd.es.com>
FTP sites: archive.epas.utoronto.ca pub/pc/ultrasound
wuarchive.wustl.edu systems/msdos/ultrasound
Hints:
- Get the FAQ from the FTP sites or the request server.
- Mail to <gus-sdk-request%itchy@dsd.es.com> for info about
other GUS related mailing lists (UNIX, OS/2, GUS-MIDI, etc.)